/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package wasolicitudesfiec.consultas;

import java.sql.*;
import java.util.Vector;
import wasolicitudesfiec.registros.Rg_Solicitud;

/**
 *
 * @author kabad
 */
public class ConsultasHistorial {

    private Connection con;

    public ConsultasHistorial() {
    }

    public Vector<Rg_Solicitud> leerProcesosHistorialPorUsuario(String usuario) throws SQLException {
        Vector<Rg_Solicitud> instancias = new Vector<Rg_Solicitud>();
        Rg_Solicitud reg;
        PreparedStatement proc = con.prepareStatement(
                "call leerProcesosHistorialPorUsuario(?) ");
        proc.setString(1, usuario);
        ResultSet rs = proc.executeQuery();
        while (rs.next()) {
            reg = new Rg_Solicitud();
            reg.setIdSolicitud(rs.getInt(1));
            reg.setNombreinstanciaproceso(rs.getString(2));
            reg.setSolicitante(rs.getString(3));
            instancias.add(reg);
        }
        return instancias;
    }

    public Vector<Rg_Solicitud> leerProcesosEncursoPorUsuario(String usuario) throws SQLException {
        Vector<Rg_Solicitud> instancias = new Vector<Rg_Solicitud>();
        Rg_Solicitud reg;
        PreparedStatement proc = con.prepareStatement(
                "call leerProcesosEncursoPorUsuario(?) ");
        proc.setString(1, usuario);
        ResultSet rs = proc.executeQuery();
        while (rs.next()) {
            reg = new Rg_Solicitud();
            reg.setIdSolicitud(rs.getInt(1));
            reg.setNombreinstanciaproceso(rs.getString(2));
            reg.setSolicitante(rs.getString(3));
            instancias.add(reg);
        }
        return instancias;
    }

    public Vector<Rg_Solicitud> leerProcesosEncursoPorRol(String rol) throws SQLException {
        Vector<Rg_Solicitud> instancias = new Vector<Rg_Solicitud>();
        Rg_Solicitud reg;
        PreparedStatement proc = con.prepareStatement(
                "call leerProcesosEncursoPorRol(?) ");
        proc.setString(1, rol);
        ResultSet rs = proc.executeQuery();
        while (rs.next()) {
            reg = new Rg_Solicitud();
            reg.setIdSolicitud(rs.getInt(1));
            reg.setNombreinstanciaproceso(rs.getString(2));
            reg.setSolicitante(rs.getString(3));
            instancias.add(reg);
        }
        return instancias;
    }

    public Vector<Rg_Solicitud> leerNodosPorInstancia(int idInstancia) throws SQLException {
        Vector<Rg_Solicitud> nodos = new Vector<Rg_Solicitud>();
        Rg_Solicitud reg;

        PreparedStatement proc = con.prepareStatement(
                "call leerNodosPorInstancia(?) ");
        proc.setInt(1, idInstancia);
        ResultSet rs = proc.executeQuery();
        while (rs.next()) {
            reg = new Rg_Solicitud();
            reg.setIdSolicitud(rs.getInt(1));
            reg.setRolEjecutor(rs.getString(2));
            reg.setEjecutor(rs.getString(3));
            reg.setActividad(rs.getString(4));
            reg.setDescripcion(rs.getString(5));
            nodos.add(reg);
        }//end while

        return nodos;
    }

    public String leerPropiedadporNodo(int idNodo, String clave) throws SQLException {
        String valorPropiedad = "";
        PreparedStatement proc = con.prepareStatement(
                "call leerPropiedadPorNodo(?,?) ");
        proc.setInt(1, idNodo);
        proc.setString(2, clave);
        ResultSet rs = proc.executeQuery();
        while (rs.next()) {
            valorPropiedad = rs.getString(1);
        }//end while
        return valorPropiedad;
    }

    public String leerPropiedadporProceso(int idProceso, String clave) throws SQLException {
        String valorPropiedad = "";
        PreparedStatement proc = con.prepareStatement(
                "call leerPropiedadPorProject(?,?) ");
        proc.setInt(1, idProceso);
        proc.setString(2, clave);
        ResultSet rs = proc.executeQuery();
        while (rs.next()) {
            valorPropiedad = rs.getString(1);
        }//end while
        return valorPropiedad;
    }

    public void setConexion(Connection con) {
        this.con = con;
    }
}
